Die JSON-Bibliothek System.Text.Json war bisher sehr tolerant bei der Deserialisierung von doppelten Attributwerten.
|
07.08.2026 09:19 Uhr |
![Neu in .NET 10.0 [34]: Keine doppelten Attributwerte bei JSON-Deserialisierung](https://heise.cloudimg.io/bound/1200x1200/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/5/1/3/8/7/6/6/dotnet-sign-6f751b3d1088dffe.jpg)
Die JSON-Bibliothek System.Text.Json war bisher sehr tolerant bei der Deserialisierung von doppelten Attributwerten.
Der folgende Programmcode führt bisher und auch im Standard System.Text.Json in .NET 10.0 nicht zu einem Laufzeitfehler:
In diesem Beispiel wird "LastName" zweimal gesetzt: einmal auf den Nachnamen und fälschlicherweise ein zweites Mal auf eine Website-URL. Dabei verwendet der JSON-Serializer immer den letzten Wert, das heißt, die Ausgabe ist nicht „Person: Holger Schwichtenberg“, sondern „Person: Holger www.IT-Visions.de“.
Das ist neu in .NET 11.0: Dr. Holger Schwichtenberg und weitere Experten präsentieren am 17. November 2026 auf der Online-Konferenz betterCode() .NET 11.0 die Änderungen für Entwicklerinnen und Entwickler. Tickets zum Frühbucherpreis sind im Online-Shop verfügbar.
In System.Text.Json gibt es seit .NET 10.0 Preview 6 bei den JsonSerializerOptions eine neue Eigenschaft AllowDuplicateProperties. Diese hat im Standard den Wert true. Mit der Umstellung auf false erreicht man, dass beim Deserialisieren von JSON-Dokumenten ein Laufzeitfehler entsteht, falls ein Attribut mehrfach gesetzt wird.
Mit AllowDuplicateProperties = false führt diese Situation zu dem Laufzeitfehler
sowohl beim Aufruf der Methode Deserialize() als auch beim Aufruf der Methode Parse().
Folgender Beispielcode nutzt AllowDuplicateProperties = false:
(rme)